//package com.hzw.saas.security.config;
//
//import java.util.Arrays;
//import java.util.Collections;
//import java.util.List;
//
//import com.fasterxml.classmate.TypeResolver;
//import com.google.common.collect.Sets;
//import org.springframework.http.HttpMethod;
//import org.springframework.http.MediaType;
//import org.springframework.stereotype.Component;
//import springfox.documentation.builders.OperationBuilder;
//import springfox.documentation.builders.ParameterBuilder;
//import springfox.documentation.builders.ResponseMessageBuilder;
//import springfox.documentation.schema.ModelRef;
//import springfox.documentation.service.ApiDescription;
//import springfox.documentation.service.Operation;
//import springfox.documentation.spi.DocumentationType;
//import springfox.documentation.spi.service.ApiListingScannerPlugin;
//import springfox.documentation.spi.service.contexts.DocumentationContext;
//
//
///**
// * 自定义非springMVC 注解暴露的接口（如定义在filter中的）
// * 备用
// *
// * @author zzl
// * @since 12/25/2020
// */
//// @Component
//public class SwaggerAddition implements ApiListingScannerPlugin {
//
//    /**
//     * Implement this method to manually add ApiDescriptions
//     * 实现此方法可手动添加ApiDescriptions
//     *
//     * @param context - Documentation context that can be used infer documentation context
//     * @return List of {@link ApiDescription}
//     * @see ApiDescription
//     */
//    @Override
//    public List<ApiDescription> apply(DocumentationContext context) {
//        Operation usernamePasswordOperation = new OperationBuilder(new CachingOperationNameGenerator())
//                .method(HttpMethod.POST)
//                .summary("用户登录")
//                .notes("用户名/手机号/邮箱和密码登录")
//                .consumes(Sets.newHashSet(MediaType.APPLICATION_FORM_URLENCODED_VALUE)) // 接收参数格式
//                .produces(Sets.newHashSet(MediaType.APPLICATION_JSON_VALUE)) // 返回参数格式
//                .tags(Sets.newHashSet("登录"))
//                .parameters(Arrays.asList(
//                        new ParameterBuilder()
//                                .description("用户名/手机号/邮箱")
//                                .type(new TypeResolver().resolve(String.class))
//                                .name("username")
//                                .defaultValue("admin")
//                                .parameterType("query")
//                                .parameterAccess("access")
//                                .required(true)
//                                .modelRef(new ModelRef("string"))
//                                .build(),
//                        new ParameterBuilder()
//                                .description("密码")
//                                .type(new TypeResolver().resolve(String.class))
//                                .name("password")
//                                .defaultValue("123456")
//                                .parameterType("query")
//                                .parameterAccess("access")
//                                .required(true)
//                                .modelRef(new ModelRef("string"))
//                                .build()
//                ))
//                .responseMessages(Sets.newHashSet(
//                        new ResponseMessageBuilder().code(200).message("登录成功").responseModel(new ModelRef("org.springframework.security.oauth2.common.DefaultOAuth2AccessToken")).build(),
//                        new ResponseMessageBuilder().code(400).message("用户名或密码错误").build()
//                        )
//                ).build();
//
//        ApiDescription loginApiDescription = new ApiDescription("login", "/login", "登录接口",
//                Collections.singletonList(usernamePasswordOperation), false);
//
//        return Collections.singletonList(loginApiDescription);
//    }
//
//    /**
//     * 是否使用此插件
//     *
//     * @param documentationType swagger文档类型
//     * @return true 启用
//     */
//    @Override
//    public boolean supports(DocumentationType documentationType) {
//        return DocumentationType.SWAGGER_2.equals(documentationType);
//    }
//
//}
